f = lambda: map(int, input().split())
n, m = f()
h = list(f())[::-1]
def g(t, m):
t -= n
d = 0
for u in h:
t+=1
if u>d:
if t<1:
return 1
u-=d
d=-u % t
m-=(u + d) // t
if m<0: return 1
else:
d-=u
return 0
a,b=0,int(11e13)
while b - a > 1:
c=(b+a)//2
if g(c,m):
a=c
else:
b=c
print(b+1)
112. Path Sum | 1556A - A Variety of Operations |
136. Single Number | 169. Majority Element |
119. Pascal's Triangle II | 409. Longest Palindrome |
1574A - Regular Bracket Sequences | 1574B - Combinatorics Homework |
1567A - Domino Disaster | 1593A - Elections |
1607A - Linear Keyboard | EQUALCOIN Equal Coins |
XOREQN Xor Equation | MAKEPAL Weird Palindrome Making |
HILLSEQ Hill Sequence | MAXBRIDGE Maximise the bridges |
WLDRPL Wildcard Replacement | 1221. Split a String in Balanced Strings |
1002. Find Common Characters | 1602A - Two Subsequences |
1555A - PizzaForces | 1607B - Odd Grasshopper |
1084A - The Fair Nut and Elevator | 1440B - Sum of Medians |
1032A - Kitchen Utensils | 1501B - Napoleon Cake |
1584B - Coloring Rectangles | 1562B - Scenes From a Memory |
1521A - Nastia and Nearly Good Numbers | 208. Implement Trie |